import data
import data_struct
import mediapipe as mp
import math
#import Gesture_Record

mpHands=mp.solutions.hands
mp_Pose = mp.solutions.pose

def get_landmark(multi_hand_landmarks):
    """
    输入手，获取双手所有坐标放入n
    :rtype: n[1][21],n中是坐标对象
    :param multi_hand_landmarks: 所有手
    """
    n=[]

    for handLms in multi_hand_landmarks:  # handLms是一只手的21点
        #print(handLms.landmark[mpHands.HandLandmark(0).value].x)  # handLms.landmark是一只手上的所有点,mpHands.HandLandmark(0).value是21点的名字，.x是取x坐标
        temp = []
        for i in range(21):
            lm=data_struct.landmark(handLms.landmark[mpHands.HandLandmark(i).value].x,
                                    handLms.landmark[mpHands.HandLandmark(i).value].y,
                                    handLms.landmark[mpHands.HandLandmark(i).value].z)#一个坐标对象
            temp.append(lm)

        n.append(temp)
    #看坐标
    # for i in range(21):
    #     print(n[0][i].x, n[0][i].y, n[0][i].z)

    return n




def get_dist(hds_lm,type):
    """
    返回一只手所有点到腕部距离，标准化采用9号和0号之间的距离
    :param hds_lm: 一只手所有坐标
    :param type: 不用了，type不影响这个函数，0：启动手势、左右挥动手势，1：握拳手势
    :return: 存一只手所有点到腕部距离
    """
    dist=[]
    #1:计算当前帧手掌长度

    #current_palm_len=math.sqrt(math.pow(hds_lm[0][0].x - hds_lm[0][12].x, 2) + math.pow(hds_lm[0][0].y - hds_lm[0][12].y, 2))
    current_palm_len=math.sqrt(math.pow(hds_lm[0][0].x - hds_lm[0][9].x, 2) + math.pow(hds_lm[0][0].y - hds_lm[0][9].y, 2))

    #2:求每一个点到腕部距离（标准化）
    for i in range(21):
        # print(hds_lm[0])
        dist.append(
            math.sqrt(math.pow(hds_lm[0][0].x - hds_lm[0][i].x, 2) + math.pow(hds_lm[0][0].y - hds_lm[0][i].y, 2))*
            (data.PALM_LEN_STD[1]/current_palm_len))
    return dist

